package models

import (
	"fmt"

	"github.com/astaxie/beego/orm"
)

//任务分组
type TaskGroup struct {
	Id          int
	GroupName   string //组名
	Description string //描述
	CreateId    int    //创建者id
	CreateTime  int64  //创建时间
	UpdateId    int    //更新者id
	UpdateTime  int64  //更新时间
	Status      int    //状态   1-正常  0-删除
}

func (group *TaskGroup) TableName() string {
	return TableName("task_group")
}

func AddGroup(group *TaskGroup) (int64, error) {
	if group.GroupName == "" {
		return 0, fmt.Errorf("分组名称不能为空")
	}

	return orm.NewOrm().Insert(group)
}

func (group *TaskGroup) Update(fields ...string) error {
	if _, err := orm.NewOrm().Update(group, fields...); err != nil {
		return err
	}
	return nil
}

func GroupGetList(page, pageSize int, filters ...interface{}) ([]*TaskGroup, int64) {
	//获得任务表的句柄
	query := orm.NewOrm().QueryTable(TableName("task_group"))
	//判断是否存在过滤条件
	if len(filters) > 0 {
		//获取过滤条件的长度
		l := len(filters)
		//遍历过滤条件
		for k := 0; k < l; k += 2 {
			query = query.Filter(filters[k].(string), filters[k+1])
		}
	}
	total, _ := query.Count()

	list := make([]*TaskGroup, 0)
	//计算偏移量
	offset := (page - 1) * pageSize
	//分页查询
	query.OrderBy("-id").Limit(pageSize, offset).All(&list)
	return list, total
}

func GroupGetId(id int) (*TaskGroup, error) {
	group := new(TaskGroup)

	err := orm.NewOrm().QueryTable(TableName("task_group")).Filter("Id", id).One(group)

	if err != nil {
		return nil, err
	}

	return group, err
}
